package kara;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class A98 {
  static  List<List<Integer>> res;//邻接表
  static  List<Integer> path;
static int n;//节点
    static int m;//边
    static int[] vis;
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        n= sc.nextInt();
        m=sc.nextInt();
        vis=new int[n+1];
        res=new ArrayList<List<Integer>>();
        path=new ArrayList<Integer>();
        //初始化邻接表
        for(int i=0;i<=n;i++){
            res.add(new ArrayList<>());
        }
        for(int i=1;i<=m;i++){
            int a=sc.nextInt();
            int b=sc.nextInt();
            res.get(a).add(b);
        }
        dfs(1,n, (ArrayList<Integer>) path);

    }
    //处理下一个节点
  static  void dfs(int cur,int u,ArrayList<Integer> path){//当前节点，目标点
//将当前点加入路径
      path.add(cur);
      //标记为走过了
      vis[cur]=1;
      //如果当前点是n
      if(cur==u) {
          for (Integer i : path) {
              System.out.print(i + " ");
          }
          System.out.println();
          //回溯，返回
          path.remove(path.size() - 1);
          vis[cur] = 0;
          return;
      }

      List<Integer> list = res.get(cur);
      for (Integer i : list) {
          if(vis[i]==0){
              //当前点没有被搜索
              dfs(i,u,path);
          }
      }
      vis[cur]=0;
      path.remove(path.size()-1);
  }
}
